package generic01;
/*
类上的泛型：
     格式：
        class 类名<E,Q,A.....>{//泛型变量
            一旦在类上定义泛型，类中均可以使用定义的泛型变量
        }

        如果不指定类型，那么这个泛型变量会被替换成Object类型
 */
public class GenericDemo02<Q> {  //Q = String
    public void method(Q q) {//Q是泛型变量，
                             // q是变量名
        System.out.println(q);
    }

    public static void main(String[] args) {
        GenericDemo02<String> gd1 = new GenericDemo02<String>();//在申明对象的时候通过<>指定类型，这个类型必须是引用类型
                                                               //<String>相当于将String这个类型传递给了类上Q
                                                               //类上的泛型变量一旦有值，那么类上的所有用到Q的地方都会被替换成String
                                                               //method(Q,q) => method(String q)
        gd1.method("abc");//abc


        GenericDemo02<Integer> gd2 = new GenericDemo02<Integer>();//<Integer>相当于将Integer这个类型传递给了类上Q
                                                                  //类上的泛型变量一旦有值，那么类上的所有用到Q的地方都会被替换成Integer
                                                                  //method(Q,q) => method(Interger q)
        gd2.method(13);//13

        GenericDemo02 gd3 = new GenericDemo02();//如果不指定类型，那么这个泛型变量会被替换成Object类型
        gd3.method(1.524);


        //GenericDemo02<int> gd2 = new GenericDemo02<int>();
    }
}
